package org.turistmontoro.dailyOffer;

import java.util.ArrayList;

import org.turistmontoro.R;
import org.turistmontoro.adaptadores.Lista_adaptador;
import org.turistmontoro.datos.Oferta;
import org.turistmontoro.utils.Utils;
import org.turistmontoro.utils.WebService;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.loopj.android.image.SmartImageView;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class DailyOfferBares extends Fragment {

	private ListView lista;
	ArrayList<Oferta> datos;
	private static final String METHOD_NAME = "getOfertaDiaria";
	public ProgressDialog progressDialog;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		datos = new ArrayList<Oferta>();

		if (Utils.hasInternet(getActivity())) {

			try {
				progressDialog = new ProgressDialog(this.getActivity());
				progressDialog.setCancelable(false);
				progressDialog.setMessage("Cargando...");
				progressDialog.show();
				AsynCall task = new AsynCall(METHOD_NAME);
				task.execute();


			} catch (Exception e) {
				// TODO Auto-generated catch block
				if (datos.isEmpty()) {
					Toast.makeText(getActivity(),
							"No hay ofertas en este momento", Toast.LENGTH_LONG)
							.show();
				} else {
					Toast.makeText(getActivity(),
							"Ha fallado la carga de datos", Toast.LENGTH_LONG)
							.show();
				}
				e.printStackTrace();
			}

		}

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,

	Bundle savedInstanceState) {
		View myView = inflater.inflate(R.layout.fragment_list_offer, null);

		// Admob
		AdView adView = (AdView) myView.findViewById(R.id.adView);
		AdRequest adRequest = new AdRequest.Builder().build();
		adView.loadAd(adRequest);

		lista = (ListView) myView.findViewById(R.id.ListView_listado_detail);
		return myView;
	}

	void listaSetAdapter() {

		if (datos.isEmpty()) {
			Oferta vacia = new Oferta(0, "",
					"No hay ofertas disponibles en este momento", "", "", "");
			datos.add(vacia);
		}
		lista.setAdapter(new Lista_adaptador(this.getActivity(),
				R.layout.list_item_offer, datos) {
			@Override
			public void onEntrada(Object entrada, View view) {
				Log.i("OfertaBares", "seteando informacions en la lista....");
				if (entrada != null) {
					TextView titulo = (TextView) view.findViewById(R.id.titulo);
					if (titulo != null)
						titulo.setText(((Oferta) entrada).getTitulo());

					TextView fechaFin = (TextView) view
							.findViewById(R.id.fechaFin);

					if (fechaFin != null)
						fechaFin.setText("Fecha de fin : "
								+ ((Oferta) entrada).getFechaFin());

					TextView bar = (TextView) view.findViewById(R.id.bar);

					if (bar != null) {
						bar.setText("Oferta de "
								+ ((Oferta) entrada).getUsername());
					}

					SmartImageView myImage = (SmartImageView) view
							.findViewById(R.id.my_image);

					myImage.setImageUrl(((Oferta) entrada).getImagen());

					TextView descripcion = (TextView) view
							.findViewById(R.id.descripcion);
					if (descripcion != null)
						descripcion.setText(((Oferta) entrada).getDescripcion());
				}
			}

		});
	}

	public class AsynCall extends AsyncTask<String, Void, Void> {

		private String nameMethod;

		public AsynCall(String nameMethod) {

			this.nameMethod = nameMethod;
		}

		@Override
		protected void onPreExecute() {
			// TODO Auto-generated method stub

		}

		@Override
		protected void onPostExecute(Void result) {
			// TODO Auto-generated method stub
			super.onPostExecute(result);
			listaSetAdapter();
			progressDialog.dismiss();

		}

		@Override
		protected Void doInBackground(String... arg0) {
			try {
				datos = WebService.invokeWS(nameMethod);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		}

	}

}
